package com.asg.guesswhat;

//import java.awt.Texture;
import java.util.Set;

import com.badlogic.gdx.graphics.Texture;

/**
 * Creates a new <code>Card</code> that contains two <code>Textures</code> and a set of 
 * <code>String</code> that describe the front of the card.  The front texture of the
 * card is show to the user when visible, the back texture is shown when the card is 
 * not visible.
 * 
 * @author blakbro2k 
 */
public class Card {
	/** Card Name */
	public String name;
	/** Front Graphic for Card */
	protected Texture front;
	/** Back Graphic for Card */
	protected Texture back;
	/** Set of Facial features */
	protected Set<String> features;
	
    //static AtomicInteger nextId = new AtomicInteger();
    
    //public int id;
    
	/**
	 * Class Constructor
	 * 
	 * @param name The name of the card
	 * @param frontPic The front picture of the card
	 * @param backPic The back picture of the card
	 * @param features The list of features describing the front of the card
	 */

	public Card(String name, Texture frontPic, Texture backPic, Set<String> features) {
		this.name = name;
		this.front = frontPic;
		this.back = backPic;
		this.features = features;
		//id = nextId.incrementAndGet();
	}

	/**
	 * Sets the Front Graphic of the card
	 * 
	 * @param front The front graphic of the card
	 */
	public void setFrontGraphic(Texture front) {
		this.front = front;
	}
	
	/**
	 * Sets the Back Graphic of the card
	 * 
	 * @param back The back graphic of the card
	 */
	public void setBackGraphic(Texture back) {
		this.back = back;
	}

	/**
	 * Sets the Facial features of the card with a <code>Set</code> of 
	 * features as a <code>String</code>
	 * 
	 * @param features <code>Set</code> list of face features
	 */
	public void setFeatures(Set<String> features) {
		this.features = features;
	}

	/**
	 * Gets the Front Graphic of the card
	 */
	public Texture getFrontGraphic() {
		return this.front;
	}
	
	/**
	 * Gets the Back Graphic of the card
	 */
	public Texture getBackGraphic() {
		return this.back;
	}
	
	/**
	 * Gets the Graphic Features of the card
	 */
	public Set<String> getFeatures() {
		return this.features;
	}
	
	public String toString() {
		return name + " card" + " :id:"/* + /*this.id*/;
	}
}